home *** CD-ROM | disk | FTP | other *** search
- import java.awt.Canvas;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.util.Enumeration;
- import java.util.StringTokenizer;
- import java.util.Vector;
-
- public class WrappingLabel extends Canvas {
- public static final int NORTH = 1;
- public static final int EAST = 2;
- public static final int SOUTH = 4;
- public static final int WEST = 8;
- public static final int CENTER = 16;
- public static final int NORTHEAST = 3;
- public static final int NORTHWEST = 9;
- public static final int SOUTHEAST = 6;
- public static final int SOUTHWEST = 12;
- private int anchor;
- private String label;
- private Dimension prefSize;
-
- public WrappingLabel() {
- this("");
- }
-
- public WrappingLabel(String var1) {
- this(var1, 9);
- }
-
- public WrappingLabel(String var1, int var2) {
- this.label = var1;
- this.anchor = var2;
- }
-
- public void paint(Graphics var1) {
- if (((Component)this).size().width > 0 && ((Component)this).size().height > 0) {
- Vector var3 = this.wrapLines(var1);
- FontMetrics var4 = var1.getFontMetrics();
- int var5 = var3.size() * var4.getHeight();
- int var8;
- if ((this.anchor & 1) > 0) {
- var8 = var4.getAscent();
- } else if ((this.anchor & 4) > 0) {
- var8 = ((Component)this).size().height - var5 + var4.getAscent();
- } else {
- var8 = (((Component)this).size().height - var5) / 2 + var4.getAscent();
- }
-
- for(Enumeration var9 = var3.elements(); var9.hasMoreElements(); var8 += var4.getHeight()) {
- String var2 = (String)var9.nextElement();
- int var7 = var4.stringWidth(var2);
- int var6;
- if ((this.anchor & 8) > 0) {
- var6 = 0;
- } else if ((this.anchor & 2) > 0) {
- var6 = ((Component)this).size().width - var7;
- } else {
- var6 = (((Component)this).size().width - var7) / 2;
- }
-
- var1.drawString(var2, var6, var8);
- }
- } else {
- super.paint(var1);
- }
-
- }
-
- public String toString() {
- return "label=[" + this.label + "]";
- }
-
- public void setPreferredSize(Dimension var1) {
- this.prefSize = new Dimension(var1.width, var1.height);
- }
-
- public Dimension preferredSize() {
- return this.prefSize == null ? super.preferredSize() : this.prefSize;
- }
-
- private Vector wrapLines(Graphics var1) {
- Vector var2 = new Vector();
- int var4 = 0;
- int var6 = 0;
- int var7 = ((Component)this).size().width;
- FontMetrics var8 = var1.getFontMetrics();
- StringBuffer var9 = new StringBuffer();
- int var3 = var8.getAscent();
- StringTokenizer var10 = new StringTokenizer(this.label, " \t\n", true);
-
- while(var10.hasMoreTokens()) {
- String var5 = var10.nextToken();
- if (var5.equals("\n")) {
- var3 += var8.getHeight();
- var4 = 0;
- var2.addElement(var9.toString());
- var9.setLength(0);
- } else {
- var6 = var8.stringWidth(var5);
- if (var4 + var6 > var7) {
- var3 += var8.getHeight();
- var4 = 0;
- var2.addElement(var9.toString());
- var9.setLength(0);
- }
-
- if (var4 != 0 || !var5.equals(" ") && !var5.equals("\t")) {
- var4 += var6;
- var9.append(var5);
- }
- }
- }
-
- if (var9.length() > 0) {
- var2.addElement(var9.toString());
- }
-
- return var2;
- }
-
- public void setText(String var1) {
- this.label = var1;
- }
- }
-